package com.rritw.webtools.safe;

import org.jsoup.Jsoup;
import org.jsoup.safety.Whitelist;

import com.rritw.webtools.common.Const;
import com.rritw.webtools.util.StringUtil;

/**
 * 过滤非安全的Html标签
 * 
 * @author Administrator 2015-3-22 下午03:21:16
 */
public class ContentSafeFilter {

    private final static Whitelist user_content_filter  = Whitelist.relaxed();
    private final static Whitelist admin_content_filter = Whitelist.relaxed();
    static {
        Whitelist.basicWithImages();
        user_content_filter.addEnforcedAttribute("a", "rel", "nofollow");

        admin_content_filter.preserveRelativeLinks(true);
        user_content_filter.preserveRelativeLinks(true);

    }

    /**
     * 比较宽松的过滤，但是会过滤掉object，script， span,div等标签，适用于富文本编辑器内容或其他html内容<br>
     * 
     * @param html
     * @return
     */
    public static String relaxed(String html) {
        return relaxed(html, false);
    }

    /**
     * 比较宽松的过滤，但是会过滤掉object，script， span,div等标签，适用于富文本编辑器内容或其他html内容<br>
     * 注：对非管理员，所有的a标签都加上nofollow属性，针对管理员则不用加
     * 
     * @param html
     * @param isAdmin
     * @return
     */
    public static String relaxed(String html, boolean isAdmin) {

        if (StringUtil.isEmpty(html)) return Const.EMPTY_STRING;
        return Jsoup.clean(html, "http://", isAdmin ? admin_content_filter : user_content_filter);
    }

    /**
     * 去掉所有标签，返回纯文字.适用于textarea，input
     * 
     * @param html
     * @return
     */
    public static String pureText(String html) {
        return Jsoup.clean(html, Whitelist.none());
    }

}
